package com.kk.xhr.model.service;

import com.kk.xhr.common.pojo.BinaryEnum;
import com.kk.xhr.model.dto.PermissionTreeDTO;
import com.kk.xhr.model.entity.Permission;

import java.util.List;
import java.util.Set;

/**
 * 权限服务接口
 *
 * @author kkmystery
 * @version 1.0 2021/3/9
 * @since 1.0.0
 */
public interface IPermissionService {

    /**
     * 根据用户id连接查询拥有的权限
     *
     * @param userId 用户id
     * @return 角色权限
     */
    Set<String> queryPermissionsByUserId(Long userId);

    PermissionTreeDTO query(Long id);

    /**
     * 根据角色id获取权限树
     *
     * @param roleId 角色id
     * @return 权限主键id列表
     */
    List<Long> queryByRoleId(Long roleId);

    Long add(Permission permission);

    boolean modify(Permission permission);

    boolean modifyStatus(Long id, BinaryEnum status);

    /**
     * 根据roleId删除权限关系
     *
     * @param roleId 角色id
     */
    void deletePermissionByRoleId(Long roleId);

    /**
     * 批量插入关系
     *
     * @param roleId 角色id
     * @param ids    权限主键id列表
     * @return 是否成功
     */
    boolean batchInsert(Long roleId, List<Long> ids);
}
